@ConditionalOnBean
和@ConditionalOnMissingBean
注解可以根据特定类是否存在决定bean的包含,你可以使用value
属性指定beans(by type),也可以使用name
定义beans(by name),search
属性用于限制搜索beans时需要考虑的ApplicationContext
层次。
注 你需要注意bean定义添加的顺序,因为这些条件的计算是基于目前处理内容的。出于这个原因,我们推荐在自动配置类上只使用@ConditionalOnBean
和@ConditionalOnMissingBean
注解(即使保证它们在其他用户定义的beans后加载)。
注 @ConditionalOnBean
和@ConditionalOnMissingBean
不会阻止@Configuration
类的创建,在类级别使用那些conditions跟使用注解标记每个@Bean
方法是等价的。